package com.nnnu.wsnackshop.service;

import com.nnnu.wsnackshop.pojo.dto.AddSkuDTO;
import com.nnnu.wsnackshop.pojo.dto.SkuPageDTO;
import com.nnnu.wsnackshop.pojo.dto.UpdateSkuDTO;
import com.nnnu.wsnackshop.pojo.entity.ProductSku;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nnnu.wsnackshop.pojo.vo.SkuVO;
import com.nnnu.wsnackshop.result.PageResult;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 * 商品SKU表 服务类
 * </p>
 *
 * @author zk
 * @since 2025-05-14
 */
public interface IProductSkuService extends IService<ProductSku> {

    PageResult<SkuVO> pageSku(SkuPageDTO dto);

    void addSku(AddSkuDTO dto);

    void updateSku(UpdateSkuDTO dto);

    SkuVO getSkuDetail(Integer id);

    void deleteSku(List<Integer> ids);

    // Excel
    void exportSku(HttpServletResponse resp) throws IOException;

    void importSku(MultipartFile file) throws IOException;

    void downloadSkuTemplate(HttpServletResponse resp) throws IOException;

    List<SkuVO> listSkuBySpu(Integer spuId);

    /**
     * 根据商品ID查询SKU列表
     * 
     * @param productId 商品ID
     * @return SKU列表
     */
    List<SkuVO> listSkuByProduct(Integer productId);

    /**
     * 更新SKU库存
     *
     * @param id    SKU ID
     * @param stock 新库存数量
     */
    void updateSkuStock(Integer id, Integer stock);
}
